/*
 * @Copyright: Copyright (c) 2030 吴周海
 * @Author: wzh200x@126.com
 * @Date: 2025-10-09 11:42:47
 * @LastEditors: wzh200x@126.com
 * @LastEditTime: 2025-10-20 10:52:05
 * @FilePath: \gogamewebserver\goGameWebServer\internal\common\config\options.go
 * @Description: 配置信息
 */
package config

import "github.com/gogf/gf/v2/database/gdb"

type LoggerOptions struct {
	LogLevel    string `mapstructure:"loglevel"`    // 日志级别
	LogPath     string `mapstructure:"logpath"`     // 日志路径
	LogFileName string `mapstructure:"logfilename"` // 日志文件名
}

type DatabaseOption struct {
	gdb.ConfigNode
	GroupName  string
	LoadEntity bool
}

type RedisOptions struct {
	Host string `mapstructure:"host"` // 网络地址
	Port int    `mapstructure:"port"` // 端口
	Pass string `mapstructure:"pass"` // 密码
	DB   int    `mapstructure:"db"`   // 数据库
}

type ServerOptions struct {
	ServerKey       string           `mapstructure:"serverkey"`       // 服务器秘钥
	ServerName      string           `mapstructure:"servername"`      // 服务器名称
	ServerID        int              `mapstructure:"serverid"`        // 服务器ID
	ServerPort      int              `mapstructure:"serverport"`      // 服务器端口
	CheckSign       bool             `mapstructure:"checksign"`       // 是否开启签名验证
	Swagger         bool             `mapstructure:"swagger"`         // 是否开启swagger文档
	SwaggerAccount  string           `mapstructure:"swaggeraccount"`  // swagger账号
	SwaggerPassword string           `mapstructure:"swaggerpassword"` // swagger密码
	LogOptions      LoggerOptions    `mapstructure:"logoptions"`      // 日志配置
	RedisOptions    RedisOptions     `mapstructure:"redisoptions"`    // Redis配置
	DatabaseOptions []DatabaseOption `mapstructure:"databaseoptions"` // 数据库配置
}

func NewOptions() *ServerOptions {
	return &ServerOptions{}
}

type PlatformOptions struct {
	Platforms []PlatformOption
}

type PlatformOption struct {
	PlatformId     int    // 平台ID
	AppId          string // 应用ID
	AppSecret      string // 应用密钥
	AppPublicKey   string // 应用公钥
	AppPrivateKey  string // 应用私钥
	AppPackageName string // 包名
}

func NewPlatformOptions() *PlatformOptions {
	return &PlatformOptions{}
}
